iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0
自我挑戰組

Django系列 第 4

Day4~ Django 漫漫長路-一鍵生成database table

  • 分享至 

  • xImage
  •  

大家好,我是Leo
今天我來介紹的是django的超級使用者建立 & model的建置/images/emoticon/emoticon30.gif
OK~~~ Let's go now!!!


First 生成django 內建資料表

還記得我們昨天在setting內設置的db name嗎
先去database create一個同名的資料庫
這裡我創建的名稱是mydb2,這邊可以創建你們自己的資料庫名稱

切入與 manage.py 同層,打上下方的code

python .\manage.py migrate  

恭喜您,輕鬆的生成 django內建資料表

https://ithelp.ithome.com.tw/upload/images/20221207/2015485350mAG67PDt.jpg


Second 建立超級使用者

python .\manage.py createsuperuser

建立完成後,接下來我們要進入django 的後台囉

python .\manage.py runserver 

進入 http://127.0.0.1:8000/admin/
我們可以在auth_user 內 看到相關的帳號資訊

https://ithelp.ithome.com.tw/upload/images/20221207/20154853veCbMHYwtA.jpg


Third 建立model

在models 創建一個py檔,名字為users
在這邊之後會講到使用者註冊功能
所以先在這裡創建一個users_model.py

users_model.py

from django.contrib.auth.models import User
from django.db import models

class Users(models.Model):
    id =  models.AutoField(primary_key=True)
    auth_user = models.OneToOneField(User, on_delete=models.PROTECT,related_name='users')
    tel = models.CharField(max_length=255, null=True)
    language = models.IntegerField(default=1,null=True) # INT[null, note: '1:繁體中文']
    title = models.CharField(max_length=255,null=True)
    status = models.IntegerField(default=0) # INT[not null, note: '0:待認證 1:啟用 2:停用']
    created_at = models.DateTimeField(auto_now_add = True,editable=False)
    updated_at = models.DateTimeField(auto_now = True)
    deleted_at = models.DateTimeField(null=True)

models/init

from .users_model import *

AutoField => auto increment

OneToOneField => 一對一關聯
models.PROTECT => 保護模式,刪除的時候,會拋出ProtectedError錯誤
related_name='users' => 反向查詢

CharField => 文字
max_length => 最大長度
null => 允許空值

IntegerField => 數字
default => 預設值

DateTimeField => Datetime格式
auto_now_add=True => 自動生成現在時間
editable=False => 表單類中將不會出現該字段,因為不會編輯到created_at自然也不用放入

階層圖如下

    |-- apps.py
    |-- forms.py
    |-- serializers.py
    |-- __init__.py
    |-- migrations
    |   |-- __init__.py
    |-- models
    |   |-- users_model.py
    |   |-- __init__.py
    |-- views
    |   |-- __init__.py
    |-- __pycache__

DB設計概念圖,因要擴展auth_user欄位,則使用OneToOne的方式擴展

https://ithelp.ithome.com.tw/upload/images/20221210/20154853sQWIeCI9bq.jpg


Fourth table 一鍵生成

python .\manage.py makemigrations

這時候會發現在website/migrations 內會自動生成一個 migrations 0001_xxxxx
再打上以下code

python .\manage.py migrate 

再回到db觀看欄位

https://ithelp.ithome.com.tw/upload/images/20221210/20154853NqK45Cf5Sd.jpg

恭喜您,輕輕鬆鬆生成table


今天我們將model生成table,與超級使用者的建立,明天預計DB的關聯方式開始講起
我們明天見,各位掰掰~~~/images/emoticon/emoticon29.gif


上一篇
Day3~ Django 漫漫長路-建置Setting檔原來這麼容易~
下一篇
Day5~Django 漫漫長路- model的基本介紹
系列文
Django30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言